In order to improve reliability of their networks, many organizations add redundancy through the use of multiple network links. For example, an organization may have a link to a first internet service provider, and a backup link to a second internet service provider. If one of the providers fails, the other link can be used as a backup to provide full service to the organization. Furthermore, while both links are active, they may be used to balance traffic, improving network throughput for the organization.
Traditional solutions for routing traffic over multiple network links are primarily simple destination address-based forwarding. For example, destination internet protocol (IP) addresses between 10.0.0.0 and 19.255.255.255 may go to a first link, while destination IP addresses between 20.0.0.0 and 29.255.255.255 may go to a second link. These solutions usually require manual setup and frequent tweaking to manage balancing between the links. Furthermore, because they focus only on the destination IP address, they may result in unbalanced loads where one IP receives more traffic than another. For example, a first server at a first destination IP address of 10.0.0.0 may be an email server and process only intermittent, non-time sensitive, short bursts of data. A second server at a second destination IP address of 20.0.0.0 may be a video conferencing server, and require low-latency, high-bandwidth network throughput. With only destination address-based forwarding, usage of multiple links from an organization to these servers may be unbalanced. Additionally, return or incoming traffic cannot be managed with only destination address-based forwarding.